// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Code generated by sidekick. DO NOT EDIT.

/// A dyn-compatible, crate-private version of [super::Dataform].
#[async_trait::async_trait]
pub trait Dataform: std::fmt::Debug + Send + Sync {
    async fn list_repositories(
        &self,
        req: crate::model::ListRepositoriesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListRepositoriesResponse>>;

    async fn get_repository(
        &self,
        req: crate::model::GetRepositoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Repository>>;

    async fn create_repository(
        &self,
        req: crate::model::CreateRepositoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Repository>>;

    async fn update_repository(
        &self,
        req: crate::model::UpdateRepositoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Repository>>;

    async fn delete_repository(
        &self,
        req: crate::model::DeleteRepositoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<()>>;

    async fn commit_repository_changes(
        &self,
        req: crate::model::CommitRepositoryChangesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::CommitRepositoryChangesResponse>>;

    async fn read_repository_file(
        &self,
        req: crate::model::ReadRepositoryFileRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ReadRepositoryFileResponse>>;

    async fn query_repository_directory_contents(
        &self,
        req: crate::model::QueryRepositoryDirectoryContentsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<
        gax::response::Response<crate::model::QueryRepositoryDirectoryContentsResponse>,
    >;

    async fn fetch_repository_history(
        &self,
        req: crate::model::FetchRepositoryHistoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::FetchRepositoryHistoryResponse>>;

    async fn compute_repository_access_token_status(
        &self,
        req: crate::model::ComputeRepositoryAccessTokenStatusRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<
        gax::response::Response<crate::model::ComputeRepositoryAccessTokenStatusResponse>,
    >;

    async fn fetch_remote_branches(
        &self,
        req: crate::model::FetchRemoteBranchesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::FetchRemoteBranchesResponse>>;

    async fn list_workspaces(
        &self,
        req: crate::model::ListWorkspacesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListWorkspacesResponse>>;

    async fn get_workspace(
        &self,
        req: crate::model::GetWorkspaceRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Workspace>>;

    async fn create_workspace(
        &self,
        req: crate::model::CreateWorkspaceRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Workspace>>;

    async fn delete_workspace(
        &self,
        req: crate::model::DeleteWorkspaceRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<()>>;

    async fn install_npm_packages(
        &self,
        req: crate::model::InstallNpmPackagesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::InstallNpmPackagesResponse>>;

    async fn pull_git_commits(
        &self,
        req: crate::model::PullGitCommitsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::PullGitCommitsResponse>>;

    async fn push_git_commits(
        &self,
        req: crate::model::PushGitCommitsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::PushGitCommitsResponse>>;

    async fn fetch_file_git_statuses(
        &self,
        req: crate::model::FetchFileGitStatusesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::FetchFileGitStatusesResponse>>;

    async fn fetch_git_ahead_behind(
        &self,
        req: crate::model::FetchGitAheadBehindRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::FetchGitAheadBehindResponse>>;

    async fn commit_workspace_changes(
        &self,
        req: crate::model::CommitWorkspaceChangesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::CommitWorkspaceChangesResponse>>;

    async fn reset_workspace_changes(
        &self,
        req: crate::model::ResetWorkspaceChangesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ResetWorkspaceChangesResponse>>;

    async fn fetch_file_diff(
        &self,
        req: crate::model::FetchFileDiffRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::FetchFileDiffResponse>>;

    async fn query_directory_contents(
        &self,
        req: crate::model::QueryDirectoryContentsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::QueryDirectoryContentsResponse>>;

    async fn search_files(
        &self,
        req: crate::model::SearchFilesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::SearchFilesResponse>>;

    async fn make_directory(
        &self,
        req: crate::model::MakeDirectoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::MakeDirectoryResponse>>;

    async fn remove_directory(
        &self,
        req: crate::model::RemoveDirectoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::RemoveDirectoryResponse>>;

    async fn move_directory(
        &self,
        req: crate::model::MoveDirectoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::MoveDirectoryResponse>>;

    async fn read_file(
        &self,
        req: crate::model::ReadFileRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ReadFileResponse>>;

    async fn remove_file(
        &self,
        req: crate::model::RemoveFileRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::RemoveFileResponse>>;

    async fn move_file(
        &self,
        req: crate::model::MoveFileRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::MoveFileResponse>>;

    async fn write_file(
        &self,
        req: crate::model::WriteFileRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WriteFileResponse>>;

    async fn list_release_configs(
        &self,
        req: crate::model::ListReleaseConfigsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListReleaseConfigsResponse>>;

    async fn get_release_config(
        &self,
        req: crate::model::GetReleaseConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ReleaseConfig>>;

    async fn create_release_config(
        &self,
        req: crate::model::CreateReleaseConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ReleaseConfig>>;

    async fn update_release_config(
        &self,
        req: crate::model::UpdateReleaseConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ReleaseConfig>>;

    async fn delete_release_config(
        &self,
        req: crate::model::DeleteReleaseConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<()>>;

    async fn list_compilation_results(
        &self,
        req: crate::model::ListCompilationResultsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListCompilationResultsResponse>>;

    async fn get_compilation_result(
        &self,
        req: crate::model::GetCompilationResultRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::CompilationResult>>;

    async fn create_compilation_result(
        &self,
        req: crate::model::CreateCompilationResultRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::CompilationResult>>;

    async fn query_compilation_result_actions(
        &self,
        req: crate::model::QueryCompilationResultActionsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::QueryCompilationResultActionsResponse>>;

    async fn list_workflow_configs(
        &self,
        req: crate::model::ListWorkflowConfigsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListWorkflowConfigsResponse>>;

    async fn get_workflow_config(
        &self,
        req: crate::model::GetWorkflowConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WorkflowConfig>>;

    async fn create_workflow_config(
        &self,
        req: crate::model::CreateWorkflowConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WorkflowConfig>>;

    async fn update_workflow_config(
        &self,
        req: crate::model::UpdateWorkflowConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WorkflowConfig>>;

    async fn delete_workflow_config(
        &self,
        req: crate::model::DeleteWorkflowConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<()>>;

    async fn list_workflow_invocations(
        &self,
        req: crate::model::ListWorkflowInvocationsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListWorkflowInvocationsResponse>>;

    async fn get_workflow_invocation(
        &self,
        req: crate::model::GetWorkflowInvocationRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WorkflowInvocation>>;

    async fn create_workflow_invocation(
        &self,
        req: crate::model::CreateWorkflowInvocationRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WorkflowInvocation>>;

    async fn delete_workflow_invocation(
        &self,
        req: crate::model::DeleteWorkflowInvocationRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<()>>;

    async fn cancel_workflow_invocation(
        &self,
        req: crate::model::CancelWorkflowInvocationRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::CancelWorkflowInvocationResponse>>;

    async fn query_workflow_invocation_actions(
        &self,
        req: crate::model::QueryWorkflowInvocationActionsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::QueryWorkflowInvocationActionsResponse>>;

    async fn get_config(
        &self,
        req: crate::model::GetConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Config>>;

    async fn update_config(
        &self,
        req: crate::model::UpdateConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Config>>;

    async fn list_locations(
        &self,
        req: location::model::ListLocationsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<location::model::ListLocationsResponse>>;

    async fn get_location(
        &self,
        req: location::model::GetLocationRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<location::model::Location>>;

    async fn set_iam_policy(
        &self,
        req: iam_v1::model::SetIamPolicyRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<iam_v1::model::Policy>>;

    async fn get_iam_policy(
        &self,
        req: iam_v1::model::GetIamPolicyRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<iam_v1::model::Policy>>;

    async fn test_iam_permissions(
        &self,
        req: iam_v1::model::TestIamPermissionsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<iam_v1::model::TestIamPermissionsResponse>>;
}

/// All implementations of [super::Dataform] also implement [Dataform].
#[async_trait::async_trait]
impl<T: super::Dataform> Dataform for T {
    /// Forwards the call to the implementation provided by `T`.
    async fn list_repositories(
        &self,
        req: crate::model::ListRepositoriesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListRepositoriesResponse>> {
        T::list_repositories(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn get_repository(
        &self,
        req: crate::model::GetRepositoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Repository>> {
        T::get_repository(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn create_repository(
        &self,
        req: crate::model::CreateRepositoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Repository>> {
        T::create_repository(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn update_repository(
        &self,
        req: crate::model::UpdateRepositoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Repository>> {
        T::update_repository(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn delete_repository(
        &self,
        req: crate::model::DeleteRepositoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<()>> {
        T::delete_repository(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn commit_repository_changes(
        &self,
        req: crate::model::CommitRepositoryChangesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::CommitRepositoryChangesResponse>> {
        T::commit_repository_changes(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn read_repository_file(
        &self,
        req: crate::model::ReadRepositoryFileRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ReadRepositoryFileResponse>> {
        T::read_repository_file(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn query_repository_directory_contents(
        &self,
        req: crate::model::QueryRepositoryDirectoryContentsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<
        gax::response::Response<crate::model::QueryRepositoryDirectoryContentsResponse>,
    > {
        T::query_repository_directory_contents(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn fetch_repository_history(
        &self,
        req: crate::model::FetchRepositoryHistoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::FetchRepositoryHistoryResponse>> {
        T::fetch_repository_history(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn compute_repository_access_token_status(
        &self,
        req: crate::model::ComputeRepositoryAccessTokenStatusRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<
        gax::response::Response<crate::model::ComputeRepositoryAccessTokenStatusResponse>,
    > {
        T::compute_repository_access_token_status(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn fetch_remote_branches(
        &self,
        req: crate::model::FetchRemoteBranchesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::FetchRemoteBranchesResponse>> {
        T::fetch_remote_branches(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn list_workspaces(
        &self,
        req: crate::model::ListWorkspacesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListWorkspacesResponse>> {
        T::list_workspaces(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn get_workspace(
        &self,
        req: crate::model::GetWorkspaceRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Workspace>> {
        T::get_workspace(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn create_workspace(
        &self,
        req: crate::model::CreateWorkspaceRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Workspace>> {
        T::create_workspace(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn delete_workspace(
        &self,
        req: crate::model::DeleteWorkspaceRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<()>> {
        T::delete_workspace(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn install_npm_packages(
        &self,
        req: crate::model::InstallNpmPackagesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::InstallNpmPackagesResponse>> {
        T::install_npm_packages(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn pull_git_commits(
        &self,
        req: crate::model::PullGitCommitsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::PullGitCommitsResponse>> {
        T::pull_git_commits(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn push_git_commits(
        &self,
        req: crate::model::PushGitCommitsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::PushGitCommitsResponse>> {
        T::push_git_commits(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn fetch_file_git_statuses(
        &self,
        req: crate::model::FetchFileGitStatusesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::FetchFileGitStatusesResponse>> {
        T::fetch_file_git_statuses(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn fetch_git_ahead_behind(
        &self,
        req: crate::model::FetchGitAheadBehindRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::FetchGitAheadBehindResponse>> {
        T::fetch_git_ahead_behind(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn commit_workspace_changes(
        &self,
        req: crate::model::CommitWorkspaceChangesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::CommitWorkspaceChangesResponse>> {
        T::commit_workspace_changes(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn reset_workspace_changes(
        &self,
        req: crate::model::ResetWorkspaceChangesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ResetWorkspaceChangesResponse>> {
        T::reset_workspace_changes(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn fetch_file_diff(
        &self,
        req: crate::model::FetchFileDiffRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::FetchFileDiffResponse>> {
        T::fetch_file_diff(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn query_directory_contents(
        &self,
        req: crate::model::QueryDirectoryContentsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::QueryDirectoryContentsResponse>> {
        T::query_directory_contents(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn search_files(
        &self,
        req: crate::model::SearchFilesRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::SearchFilesResponse>> {
        T::search_files(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn make_directory(
        &self,
        req: crate::model::MakeDirectoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::MakeDirectoryResponse>> {
        T::make_directory(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn remove_directory(
        &self,
        req: crate::model::RemoveDirectoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::RemoveDirectoryResponse>> {
        T::remove_directory(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn move_directory(
        &self,
        req: crate::model::MoveDirectoryRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::MoveDirectoryResponse>> {
        T::move_directory(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn read_file(
        &self,
        req: crate::model::ReadFileRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ReadFileResponse>> {
        T::read_file(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn remove_file(
        &self,
        req: crate::model::RemoveFileRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::RemoveFileResponse>> {
        T::remove_file(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn move_file(
        &self,
        req: crate::model::MoveFileRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::MoveFileResponse>> {
        T::move_file(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn write_file(
        &self,
        req: crate::model::WriteFileRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WriteFileResponse>> {
        T::write_file(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn list_release_configs(
        &self,
        req: crate::model::ListReleaseConfigsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListReleaseConfigsResponse>> {
        T::list_release_configs(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn get_release_config(
        &self,
        req: crate::model::GetReleaseConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ReleaseConfig>> {
        T::get_release_config(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn create_release_config(
        &self,
        req: crate::model::CreateReleaseConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ReleaseConfig>> {
        T::create_release_config(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn update_release_config(
        &self,
        req: crate::model::UpdateReleaseConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ReleaseConfig>> {
        T::update_release_config(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn delete_release_config(
        &self,
        req: crate::model::DeleteReleaseConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<()>> {
        T::delete_release_config(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn list_compilation_results(
        &self,
        req: crate::model::ListCompilationResultsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListCompilationResultsResponse>> {
        T::list_compilation_results(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn get_compilation_result(
        &self,
        req: crate::model::GetCompilationResultRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::CompilationResult>> {
        T::get_compilation_result(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn create_compilation_result(
        &self,
        req: crate::model::CreateCompilationResultRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::CompilationResult>> {
        T::create_compilation_result(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn query_compilation_result_actions(
        &self,
        req: crate::model::QueryCompilationResultActionsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::QueryCompilationResultActionsResponse>>
    {
        T::query_compilation_result_actions(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn list_workflow_configs(
        &self,
        req: crate::model::ListWorkflowConfigsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListWorkflowConfigsResponse>> {
        T::list_workflow_configs(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn get_workflow_config(
        &self,
        req: crate::model::GetWorkflowConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WorkflowConfig>> {
        T::get_workflow_config(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn create_workflow_config(
        &self,
        req: crate::model::CreateWorkflowConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WorkflowConfig>> {
        T::create_workflow_config(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn update_workflow_config(
        &self,
        req: crate::model::UpdateWorkflowConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WorkflowConfig>> {
        T::update_workflow_config(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn delete_workflow_config(
        &self,
        req: crate::model::DeleteWorkflowConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<()>> {
        T::delete_workflow_config(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn list_workflow_invocations(
        &self,
        req: crate::model::ListWorkflowInvocationsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::ListWorkflowInvocationsResponse>> {
        T::list_workflow_invocations(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn get_workflow_invocation(
        &self,
        req: crate::model::GetWorkflowInvocationRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WorkflowInvocation>> {
        T::get_workflow_invocation(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn create_workflow_invocation(
        &self,
        req: crate::model::CreateWorkflowInvocationRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::WorkflowInvocation>> {
        T::create_workflow_invocation(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn delete_workflow_invocation(
        &self,
        req: crate::model::DeleteWorkflowInvocationRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<()>> {
        T::delete_workflow_invocation(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn cancel_workflow_invocation(
        &self,
        req: crate::model::CancelWorkflowInvocationRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::CancelWorkflowInvocationResponse>>
    {
        T::cancel_workflow_invocation(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn query_workflow_invocation_actions(
        &self,
        req: crate::model::QueryWorkflowInvocationActionsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::QueryWorkflowInvocationActionsResponse>>
    {
        T::query_workflow_invocation_actions(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn get_config(
        &self,
        req: crate::model::GetConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Config>> {
        T::get_config(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn update_config(
        &self,
        req: crate::model::UpdateConfigRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<crate::model::Config>> {
        T::update_config(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn list_locations(
        &self,
        req: location::model::ListLocationsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<location::model::ListLocationsResponse>> {
        T::list_locations(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn get_location(
        &self,
        req: location::model::GetLocationRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<location::model::Location>> {
        T::get_location(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn set_iam_policy(
        &self,
        req: iam_v1::model::SetIamPolicyRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<iam_v1::model::Policy>> {
        T::set_iam_policy(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn get_iam_policy(
        &self,
        req: iam_v1::model::GetIamPolicyRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<iam_v1::model::Policy>> {
        T::get_iam_policy(self, req, options).await
    }

    /// Forwards the call to the implementation provided by `T`.
    async fn test_iam_permissions(
        &self,
        req: iam_v1::model::TestIamPermissionsRequest,
        options: gax::options::RequestOptions,
    ) -> crate::Result<gax::response::Response<iam_v1::model::TestIamPermissionsResponse>> {
        T::test_iam_permissions(self, req, options).await
    }
}
